Many software products are developed, maintained, and improved through a project management process, which is generally well-understood and supported by formal software engineering education programs. Many separate, and some integrated, tools have been developed, which are used by software developers to automate, track, and control the configuration of released and delivered software products.
Referring now to FIG. 1 b, a generalized process flow of software development is shown, in which software requirements (103) for new products and new features to existing software products are received into a formal software development process (110). The source code and compiler directive files are then received (111) or “checked in” to a configuration management system, subsequent to which one or more test cases are executed (112) against the code to verify one or more of the requirements are met and to identify any errors in the code.
Modules, methods, libraries, etc., which pass the test are then promoted to a released status (113), so that they may be deployed, installed, sold, distributed, etc. (114), for end use.
During the life cycle of the software product, one or more bug reports or feature requests may be received (104), which in turn are reflected in new or revised requirements (103), and the cycle (110-114) is repeated.
This is a very generalized view of the software development process, of course, but it serves the purpose for the present disclosure.